package com.cs.beneficios.web.action;
import com.cs.beneficios.business.model.ValorFlexibleVO;
import com.cs.beneficios.common.ConnectionFactory;
import com.cs.beneficios.common.entity.Consultas;
import java.sql.SQLException;
//import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForward;
//import org.apache.struts.action.ActionError;
//import org.apache.struts.action.ActionErrors;
import java.io.IOException;
import javax.servlet.ServletException;

public class BuscarDominiosAction extends Action
{
  /**
   * This is the main action called from the Struts framework.
   * @param mapping The ActionMapping used to select this instance.
   * @param form The optional ActionForm bean for this request.
   * @param request The HTTP Request we are processing.
   * @param response The HTTP Response we are processing.
   * @return 
   * @throws java.io.IOException
   * @throws javax.servlet.ServletException
   */
  public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
  {
  	
    //ConnectionFactory cf = new ConnectionFactory("beneficios","beneficios");
	ConnectionFactory cf = new ConnectionFactory();
    Consultas objCons = new Consultas(cf);
    try{
        HttpSession session = request.getSession();
        
        String strContinuar = request.getParameter("Continuar");
        List lContinuar = new LinkedList();
        if((Object)strContinuar != null && !strContinuar.equals(""))
        {
          List lDominioCopy = (List)session.getAttribute("listadominio");
          
          String strContador = (String)session.getAttribute("Contador");
          if((Object)strContador == null)
            strContador = "10";
          
          int iContador = Integer.parseInt(strContador);
          session.removeAttribute("Contador");
          
          String strPaginar = request.getParameter("Paginacion");
          if((Object)strPaginar != null && strPaginar.equals("Anterior"))
          {
            iContador-=20;
            strContador = String.valueOf(iContador);
          }
          
          if(iContador<0)
            iContador = 0;
          
          for(int j=iContador;j<lDominioCopy.size();j++)
          {
            lContinuar.add(lDominioCopy.get(j));
          }
          if(lContinuar.size()>0)
            request.setAttribute("ListaValores",lContinuar);
            
          strContador = String.valueOf(iContador+10);
          session.setAttribute("Contador",strContador);
          
          
        }else
        {
          session.removeAttribute("Contador");
          List ldominio = new LinkedList();
          Object oCodatri = (Object)request.getParameter("codatributo");
          Object oTipovfl = (Object)request.getParameter("tipovalorflex");
          String codatri;
          String tipovfl;
          if(oCodatri!=null)
          {
             codatri = request.getParameter("codatributo");
          }else
          {
            codatri = (String)session.getAttribute("codatri");
          }
          if(oTipovfl!=null)
          {
             tipovfl = request.getParameter("tipovalorflex");
          }else
          {
            tipovfl = (String)session.getAttribute("tipovalorflex");
          }
          String strNombre = request.getParameter("strnombre");
          if((Object)strNombre != null && !strNombre.equals(""))
            ldominio = objCons.getDominioByCritera(tipovfl,strNombre.trim());
          else
            ldominio = objCons.getDominio(tipovfl);
          lContinuar.addAll(ldominio);
          int tamano = ldominio.size();
          if(tamano != 0)
          {
            String strTamano=String.valueOf(tamano);
            
            ValorFlexibleVO objvalor = (ValorFlexibleVO)ldominio.get(0);
            
            session.setAttribute("Escoger","2");
            session.setAttribute("codatri",codatri);
            session.setAttribute("tipovalorflex",tipovfl);
            session.setAttribute("nombretvfl",objvalor.getDescripciontvfl());
            session.setAttribute("vigenciatvfl",objvalor.getVigenciatvfl());
            session.setAttribute("listadominio",ldominio);
            
            if(lContinuar.size()>0)
               request.setAttribute("ListaValores",lContinuar);
            
            session.setAttribute("tamano",strTamano);
          }else
          {
            session.removeAttribute("listadominio");
            // Hacer un procedimiento que actualice el campo validar_lista por N
            session.setAttribute("msg","La lista no tiene valores");
          }
        }
    }finally
    {
      try{
        cf.closeConnection(objCons.getConn());
      }catch(SQLException e)
      {
		System.err.println("/******** TDSUB - cwsub");
		e.printStackTrace();
		System.err.println("TDSUB - cwsub ********/");
      }
    }
 
    return mapping.findForward("success");
  }
}